﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
using LHS.Core.TableInfo;
using MS.Core.Constants.Objects;

namespace LHS.Win
{
    public partial class frmTraceUpdateBill : Form
    {
        LHS.Core.Clinical.ClinicalController objController = new LHS.Core.Clinical.ClinicalController();
        // Methods
        public frmTraceUpdateBill()
        {
            this.InitializeComponent();
        }

        private void btThoat_Click(object sender, EventArgs e)
        {
            base.Close();
        }

        private void btXem_Click(object sender, EventArgs e)
        {
            this.ddlNgay.Enabled = false;
            DataTable dt = new DataTable();

            if (this.cboBehaviour.SelectedItem.ToString() == "Nhập hóa Đơn")
            {
                List<ExpressionObject> param = new List<ExpressionObject>();
                param.Add(new ExpressionObject(InfoUserUpdatedInvoices.USNSTATUS, 1));
                param.Add(new ExpressionObject("usnDateSearch", " between '" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM' and dateAdd(dd,1,'" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM') ", ExpressionObject.eSelectOperator.None));
                dt = objController.GetData("vw_UpdateInvoiceHistory", param);

                if (dt == null || dt.Rows.Count == 0)
                {
                    MessageBox.Show("Chưa có người nào nhập hóa đơn!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.dataGrid1.DataSource = null;
                    this.ddlNgay.Enabled = true;
                    return;
                }
            }
            else if (this.cboBehaviour.SelectedItem.ToString() == "Hủy hóa Đơn")
            {
                List<ExpressionObject> param = new List<ExpressionObject>();
                param.Add(new ExpressionObject("usnDateSearch", " between '" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM' and dateAdd(dd,1,'" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM') ", ExpressionObject.eSelectOperator.None));
                dt = objController.GetData("vw_UserDeleteInvoice", param);
                if (dt == null || dt.Rows.Count == 0)
                {
                    MessageBox.Show("Chưa có người nào hủy hóa đơn!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.dataGrid1.DataSource = null;
                    this.ddlNgay.Enabled = true;
                    return;
                }
            }
            else
            {
                List<ExpressionObject> param = new List<ExpressionObject>();
                param.Add(new ExpressionObject(InfoUserUpdatedInvoices.USNSTATUS, 0));
                param.Add(new ExpressionObject("usnDateSearch", " between '" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM' and dateAdd(dd,1,'" + this.ddlNgay.Value.ToString("MM/dd/yyyy") + " 00:00:00 AM') ", ExpressionObject.eSelectOperator.None));
                dt = objController.GetData("vw_UpdateInvoiceHistory", param);
                if (dt == null || dt.Rows.Count == 0)
                {
                    MessageBox.Show("Chưa có người nào cập nhật hóa đơn!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    this.dataGrid1.DataSource = null;
                    this.ddlNgay.Enabled = true;
                    return;
                }
            }

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                if (dt.Rows[i][InfoInvoices.INVPAYMENTSTATUS].ToString() == "0")
                {
                    dt.Rows[i][InfoInvoices.INVPAYMENTSTATUS] = "Một lần";
                }
                else
                {
                    dt.Rows[i][InfoInvoices.INVPAYMENTSTATUS] = "Trả chậm";
                }
            }
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            if (this.cboBehaviour.SelectedItem.ToString() == "Hủy hóa Đơn")
            {
                this.dataGrid1.Enabled = true;
                this.dataGrid1.DataSource = ds;
                this.dataGrid1.SetDataBinding(ds, "vw_UpdateInvoiceHistory");
                this.dataGrid1.ReadOnly = true;
                this.dataGrid1.TableStyles.Clear();
                this.loadDataGridHuy();
            }
            else
            {
                this.dataGrid1.Enabled = true;
                this.dataGrid1.DataSource = ds;
                this.dataGrid1.SetDataBinding(ds, "vw_UpdateInvoiceHistory");
                this.dataGrid1.ReadOnly = true;
                this.dataGrid1.TableStyles.Clear();
                this.loadDataGrid();
            }
        }

        private void cboBehaviour_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.count++;
            if (this.count != 1)
            {
                this.ddlNgay.Enabled = true;
                this.ddlNgay.Visible = true;
                this.lbNgay.Visible = true;
                this.btXem.Visible = true;
            }
        }

        private void frmTraceUpdateBill_Load(object sender, EventArgs e)
        {
            this.ddlNgay.Value = DateTime.Now;
          
            this.cboBehaviour.Items.Add("Nhập hóa Đơn");
            this.cboBehaviour.Items.Add("Cập Nhật Hóa Đơn");
            this.cboBehaviour.Items.Add("Hủy hóa Đơn");

            List<ExpressionObject> param = new List<ExpressionObject>();
            param.Add(new ExpressionObject(InfoUserUpdatedInvoices.USNSTATUS, 1));
            DataTable dtUpdateInvoiceHistory = objController.GetData("vw_UpdateInvoiceHistory", param);
            if (dtUpdateInvoiceHistory == null || dtUpdateInvoiceHistory.Rows.Count == 0)
            {
                param.Clear();
                param.Add(new ExpressionObject(InfoUserUpdatedInvoices.USNSTATUS, 0));
                dtUpdateInvoiceHistory = objController.GetData("vw_UpdateInvoiceHistory", param);

                if (dtUpdateInvoiceHistory == null || dtUpdateInvoiceHistory.Rows.Count == 0)
                {
                    dtUpdateInvoiceHistory = objController.GetData("vw_UserDeleteInvoice");
                    if (dtUpdateInvoiceHistory == null || dtUpdateInvoiceHistory.Rows.Count == 0)
                    {
                        MessageBox.Show("Chưa có người nào cập nhật hóa đơn!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        return;
                    }
                }

            }
            for (int i = 0; i < dtUpdateInvoiceHistory.Rows.Count; i++)
            {
                string str = dtUpdateInvoiceHistory.Rows[i][InfoInvoices.INVPAYMENTSTATUS].ToString();
                if (str == "0")
                {
                    dtUpdateInvoiceHistory.Rows[i][InfoInvoices.INVPAYMENTSTATUS] = "Một lần";
                }
                else if (str == "2")
                {
                    dtUpdateInvoiceHistory.Rows[i][InfoInvoices.INVPAYMENTSTATUS] = "Hoàn tất trả chậm";
                }
                else
                {
                    dtUpdateInvoiceHistory.Rows[i][InfoInvoices.INVPAYMENTSTATUS] = "Trả chậm";
                }

                string str2 = dtUpdateInvoiceHistory.Rows[i]["usnStatus"].ToString();
                if (str2 == "0")
                {
                    this.cboBehaviour.SelectedItem = "Cập Nhật hóa Đơn";
                }
                if (str2 == "1")
                {
                    this.cboBehaviour.SelectedItem = "Nhập hóa Đơn";
                }
                else
                {
                    this.cboBehaviour.SelectedItem = "Hủy hóa Đơn";
                }
            }

            DataSet ds = new DataSet();
            ds.Tables.Add(dtUpdateInvoiceHistory);
            this.dataGrid1.Enabled = true;
            this.dataGrid1.DataSource = ds;
            this.dataGrid1.SetDataBinding(ds, "vw_UpdateInvoiceHistory");
            this.dataGrid1.ReadOnly = true;
            this.dataGrid1.TableStyles.Clear();
            this.loadDataGrid();

        }

        public void loadDataGrid()
        {
            DataGridTableStyle table = new DataGridTableStyle();
            table.MappingName = "vw_UpdateInvoiceHistory";
            table.AlternatingBackColor = Color.AliceBlue;
            table.HeaderForeColor = Color.Maroon;
            table.GridLineColor = Color.CornflowerBlue;
            DataGridTextBoxColumn column = new DataGridTextBoxColumn();
            column.MappingName = InfoInvoices.INVISN;
            column.HeaderText = "Mã hóa Đơn";
            column.Width = 100;
            column.NullText = string.Empty;
            table.GridColumnStyles.Add(column);
            DataGridTextBoxColumn column2 = new DataGridTextBoxColumn();
            column2.MappingName = InfoClinicalRecord.CLRISN;
            column2.HeaderText = "Mã Bệnh Án";
            column2.Width = 100;
            column2.NullText = string.Empty;
            table.GridColumnStyles.Add(column2);
            DataGridTextBoxColumn column3 = new DataGridTextBoxColumn();
            column3.MappingName = InfoPatients.PATID;
            column3.HeaderText = "Số ID";
            column3.Width = 100;
            column3.NullText = string.Empty;
            table.GridColumnStyles.Add(column3);
            DataGridTextBoxColumn column4 = new DataGridTextBoxColumn();
            column4.MappingName = InfoPatients.PATNAME;
            column4.HeaderText = "Tên Bệnh Nhân";
            column4.Width = 210;
            column4.NullText = string.Empty;
            table.GridColumnStyles.Add(column4);
            DataGridTextBoxColumn column5 = new DataGridTextBoxColumn();
            column5.MappingName = InfoClinicalRecord.CLREXAMINATIONDATE;
            column5.HeaderText = "Ngày Khám";
            column5.Width = 150;
            column5.NullText = string.Empty;
            table.GridColumnStyles.Add(column5);
            DataGridTextBoxColumn column6 = new DataGridTextBoxColumn();
            column6.MappingName = InfoUserUpdatedInvoices.USNMONEYBEFOREUPDATE;
            column6.HeaderText = "Số tiền TT trước(CN)";
            column6.Width = 180;
            column6.NullText = string.Empty;
            table.GridColumnStyles.Add(column6);
            DataGridTextBoxColumn column7 = new DataGridTextBoxColumn();
            column7.MappingName = InfoInvoices.INVTOTALPAYMENT;
            column7.HeaderText = "Số tiền TT sau(CN)";
            column7.Width = 180;
            column7.NullText = string.Empty;
            table.GridColumnStyles.Add(column7);
            DataGridTextBoxColumn column8 = new DataGridTextBoxColumn();
            column8.MappingName = InfoInvoices.INVPAYMENTSTATUS;
            column8.HeaderText = "Khả năng thanh toán";
            column8.Width = 180;
            column8.NullText = string.Empty;
            table.GridColumnStyles.Add(column8);
            DataGridTextBoxColumn column9 = new DataGridTextBoxColumn();
            column9.MappingName = InfoUsers.USRNAME;
            column9.HeaderText = "Người Cập Nhật";
            column9.Width = 180;
            column9.NullText = string.Empty;
            table.GridColumnStyles.Add(column9);
            DataGridTextBoxColumn column10 = new DataGridTextBoxColumn();
            column10.MappingName = InfoUserUpdatedInvoices.USNDATE;
            column10.HeaderText = "Ngày Cập Nhật";
            column10.Width = 0xa5;
            column10.NullText = string.Empty;
            table.GridColumnStyles.Add(column10);
            DataGridTextBoxColumn column11 = new DataGridTextBoxColumn();
            column11.MappingName = InfoUserUpdatedInvoices.USNREASON;
            column11.HeaderText = "Lý Do Cập Nhật";
            column11.Width = 160;
            column11.NullText = string.Empty;
            table.GridColumnStyles.Add(column11);
            this.dataGrid1.TableStyles.Add(table);
        }

        public void loadDataGridHuy()
        {
            DataGridTableStyle table = new DataGridTableStyle();
            table.MappingName = "vw_UpdateInvoiceHistory";
            table.AlternatingBackColor = Color.AliceBlue;
            table.HeaderForeColor = Color.Maroon;
            table.GridLineColor = Color.CornflowerBlue;
            DataGridTextBoxColumn column = new DataGridTextBoxColumn();
            column.MappingName = InfoInvoices.INVISN;
            column.HeaderText = "Mã hóa Đơn";
            column.Width = 100;
            column.NullText = string.Empty;
            table.GridColumnStyles.Add(column);
            DataGridTextBoxColumn column2 = new DataGridTextBoxColumn();
            column2.MappingName = InfoInvoices.CLRISN;
            column2.HeaderText = "Mã Bệnh Án";
            column2.Width = 0x83;
            column2.NullText = string.Empty;
            table.GridColumnStyles.Add(column2);
            DataGridTextBoxColumn column3 = new DataGridTextBoxColumn();
            column3.MappingName = InfoPatients.PATID;
            column3.HeaderText = "Số ID";
            column3.Width = 100;
            column3.NullText = string.Empty;
            table.GridColumnStyles.Add(column3);
            DataGridTextBoxColumn column4 = new DataGridTextBoxColumn();
            column4.MappingName = InfoPatients.PATNAME;
            column4.HeaderText = "Tên Bệnh Nhân";
            column4.Width = 210;
            column4.NullText = string.Empty;
            table.GridColumnStyles.Add(column4);
            DataGridTextBoxColumn column5 = new DataGridTextBoxColumn();
            column5.MappingName = InfoClinicalRecord.CLREXAMINATIONDATE;
            column5.HeaderText = "Ngày Khám";
            column5.Width = 150;
            column5.NullText = string.Empty;
            table.GridColumnStyles.Add(column5);
            DataGridTextBoxColumn column6 = new DataGridTextBoxColumn();
            column6.MappingName = InfoUsers.USRNAME;
            column6.HeaderText = "Người Cập Nhật";
            column6.Width = 180;
            column6.NullText = string.Empty;
            table.GridColumnStyles.Add(column6);
            DataGridTextBoxColumn column7 = new DataGridTextBoxColumn();
            column7.MappingName = InfoUserUpdatedInvoices.USNDATE;
            column7.HeaderText = "Ngày Hủy";
            column7.Width = 0xa5;
            column7.NullText = string.Empty;
            table.GridColumnStyles.Add(column7);
            DataGridTextBoxColumn column8 = new DataGridTextBoxColumn();
            column8.MappingName = InfoUserUpdatedInvoices.USNREASON;
            column8.HeaderText = "Lý Do Hủy";
            column8.Width = 160;
            column8.NullText = string.Empty;
            table.GridColumnStyles.Add(column8);
            this.dataGrid1.TableStyles.Add(table);
        }

        public string parseTien(string tien)
        {
            ArrayList list = new ArrayList();
            for (int i = 3; i < 100; i += 3)
            {
                list.Add(i.ToString());
            }
            char[] chArray = tien.ToCharArray();
            ArrayList list2 = new ArrayList();
            int num2 = 1;
            for (int j = chArray.Length; (j <= chArray.Length) && (j > 0); j--)
            {
                list2.Add(chArray[j - 1].ToString());
                for (int m = 0; m < list.Count; m++)
                {
                    if ((list[m].ToString() == num2.ToString()) && (j > 1))
                    {
                        list2.Add(".");
                    }
                }
                num2++;
            }
            string str = string.Empty;
            for (int k = list2.Count; (k <= list2.Count) && (k > 0); k--)
            {
                str = str + list2[k - 1].ToString();
            }
            return str;
        }

    }
}